package com.aco.party.dao.custom;

import com.aco.party.dao.mbg.MBGUserDao;
import com.aco.party.model.po.User;
import com.aco.party.model.vo.UserQueryParam;
import com.aco.party.model.vo.common.PageParam;
import com.aco.party.model.vo.common.UserWithRoleVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserDao extends MBGUserDao {
    List<User> getAll();

    User getUserByName(@Param("name")String name);

    User getUserByEmail(@Param("email")String email);

    List<User> getUsers(@Param("request")PageParam pageParam);

    UserWithRoleVo getUserWithRole(Long userId);

    List<User> getUsersByParam(@Param("param") UserQueryParam param);

    List<UserWithRoleVo> getUserVosByParam(@Param("param") UserQueryParam param, @Param("request") PageParam pageParam);

    Integer getUsersCountByParam(@Param("param") UserQueryParam param);

    int getCountByParam(String date);
}